package business.dto;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.ResourceBundle;

import javax.persistence.Column;
import javax.persistence.Lob;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;

public class CandidatoDTO implements BasicDTO {
	
	
	WordSearchDTO wordSearchDTO=new WordSearchDTO();
	
	private String textToSearch="";
	private String checkSearch="0";
	
	private String name;
	private String email;
	private String cv;
	private String id;
	private String incoming="";

	private Date dateStart1;
	private Date dateStart2;
	
	
	private String ambientiSvil;

	private String appServer;

	private String areaDiStudi;

	private String areaDip;

	private String areaMaster;

	private String areaUni;

	private Integer categoria;

	private String certDip;

	private String certMaster;

	private String certUni;

	private String certificatiCorsiAttestati;

	private String citta;

	private String cittaDip;

	private String cittaDom;

	private String cittaMaster;

	private String cittaRes;

	private String cittaUni;

	private String cognome;

	private String comeCiHaiConosciuto;

	private String contratto;

	private Date dataNascita;

	private Date dateStart;

	private Date dateTime;

	private String db;

	private String indirizzoDom;

	private String indirizzo_res;

	private String istitutoDip;

	private String istitutoMaster;

	private String istitutoUni;

	private String laureaLabel;

	private String lingue;

	private String livelloIstruzione;

	private String masterLabel;

	private String nazione;

	private String nazioneDip;

	private String nazioneMaster;

	private String nazioneUni;



	private String patente;

	private String prodotti;

	private String salario;

	private String sesso;

	private String sistemiOperativi;

	private String skill;

	private String skillLabel;

	private String telefono;

	private String tipoCategoria;

	private String workEsperienza;

	private String workPreference;
	
	private GestioneCandidatoDTO gcDTO=new GestioneCandidatoDTO();

	private ResourceBundle rb = null;
	private ArrayList<String> hp = new ArrayList<String>();

	private static Logger logger = LogManager.getLogger(CandidatoDTO.class);

	@Override
	public ResourceBundle getResourceBundle() {
		return rb;
	}

	public void setResourceBundle(ResourceBundle rb) {
		this.rb = rb;
	}

	public ArrayList<String> getHeaderParameters() {

		return hp;
	}

	public void setHeaderParameters(ArrayList<String> hp) {
		this.hp = hp;
	}

	public String getCustomFields() {
		// TODO Auto-generated method stub
		return "";
	}

	@Override
	public void setCustomFields(String customFields) {
		// TODO Auto-generated method stub

	}
	
	@Override
	public String toString() {
		// DynamicObjectHandler doh = new
		// DynamicObjectHandler("PIM",getResourceBundle(),getHeaderParameters());

		// TEST
		StringBuffer sb = new StringBuffer();
		String s = "";
		

		if (name == null) {
			name = "";
		}
		if (cognome == null) {
			cognome = "";
		}
		
		if (email == null) {
			email = "";
		}
		if (cv == null) {
			cv = "";
		}
		if(telefono == null){
			telefono="";
		}
		
		if(indirizzo_res == null){
			indirizzo_res="";
		}
		if(cittaRes == null){
			cittaRes="";
		}
		if(indirizzoDom == null){
			indirizzoDom="";
		}
		if(cittaDom == null){
			cittaDom="";
		}
		
		if(nazione == null){
			nazione="";
		}
		if(sesso == null){
			sesso="";
		}
		if(categoria == null){
			categoria=0;
		}
		if(contratto == null){
			contratto="";
		}
		if(salario == null){
			salario="";
		}
		
		if(workPreference == null){
			workPreference="";
		}
		if(livelloIstruzione == null){
			livelloIstruzione="";
		}
		if(workEsperienza == null){
			workEsperienza="";
		}
		if(textToSearch == null){
			textToSearch="";
		}
		sb.append("<Candidato>");
		sb	.append("<ID>").append(id).append("</ID>")
			.append("<Nuovo>").append(incoming).append("</Nuovo>")
			.append("<Name>").append(name).append("</Name>")
			.append("<Cognome>").append(cognome).append("</Cognome>")
			.append("<Contratto>").append(contratto).append("</Contratto>")
			.append("<Salario>").append(salario).append("</Salario>")
		;
		if (dataNascita != null) {
			
			String date="";
    		
			ResourceBundle rb= ResourceBundle.getBundle("bundle");
			
			String dateFormat=rb.getString("DATE_FORMAT");
			
    		SimpleDateFormat sdf=new SimpleDateFormat(dateFormat);
    		date=sdf.format(dataNascita);
	    	
	    	
			
			sb.append("<DataNascita>").append(date).append("</DataNascita>");
		}else{
			sb.append("<DataNascita>").append("").append("</DataNascita>");
		}
		if(dateStart == null){
			sb.append("<DataCreazione>").append("").append("</DataCreazione>");
		}else{
			String date="";
    		
			ResourceBundle rb= ResourceBundle.getBundle("bundle");
			String dateFormat=rb.getString("DATE_FORMAT");
			
    		SimpleDateFormat sdf=new SimpleDateFormat(dateFormat);
    		
    		date=sdf.format(dateStart);
    		
			sb.append("<DataCreazione>").append(date).append("</DataCreazione>");
		}
		sb	.append("<Residenza>").append(indirizzo_res).append("</Residenza>")
			.append("<CittaRes>").append(cittaRes).append("</CittaRes>")
			.append("<Domicilio>").append(indirizzoDom).append("</Domicilio>")
			.append("<CittaDom>").append(cittaDom).append("</CittaDom>")
			.append("<Email>").append(email).append("</Email>")
			.append("<Telefono>").append(telefono).append("</Telefono>")
			.append("<CV>").append(cv).append("</CV>")
			.append("<Skills>").append(skill).append("</Skills>")
			.append("<AmbienteSviluppo>").append(ambientiSvil).append("</AmbienteSviluppo>")
			.append("<SistemiOperativi>").append(sistemiOperativi).append("</SistemiOperativi>")
			.append("<DB>").append(db).append("</DB>")
			.append("<ApplicationServer>").append(appServer).append("</ApplicationServer>")
			.append("<Prodotti>").append(prodotti).append("</Prodotti>")

			.append("<Patente>").append(patente).append("</Patente>")
			.append("<ComeCiHaiConosciuto>").append(comeCiHaiConosciuto).append("</ComeCiHaiConosciuto>");
		
		// 	BEGIN - DATI RELATIVI AL PANNELLO
		
		if(gcDTO!=null){
			
			String dataColloquio="";
			if(gcDTO.getDataColloquio()!=null){
				SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
				dataColloquio=sdf.format(gcDTO.getDataColloquio());
			}
			
			sb	.append("<DataColloquio>").append(dataColloquio).append("</DataColloquio>")
				.append("<GiorniPreavviso>").append(gcDTO.getGiorniPreavviso()).append("</GiorniPreavviso>")
				.append("<ClienteFinale>").append(gcDTO.getClienteFinale()).append("</ClienteFinale>");
		}
		
		
		
		//	END - DATI RELATIVI AL PANNELLO
		
		
		
		if(checkSearch.equals("1")){
			sb.append("<CheckToSearch>").append(checkSearch).append("</CheckToSearch>") ;
		}else{
			sb.append("<CheckToSearch>").append("0").append("</CheckToSearch>") ;
		}
		
		sb	.append("<TextToSearch>").append(textToSearch).append("</TextToSearch>") ;
		
		if(dateStart1==null){
			sb.append("<CreatoDal>").append("").append("</CreatoDal>");
		}else{
			String date="";
    		
			ResourceBundle rb= ResourceBundle.getBundle("bundle");
			String dateFormat=rb.getString("DATE_FORMAT");
			
    		SimpleDateFormat sdf=new SimpleDateFormat(dateFormat);
    		date=sdf.format(dateStart1);
			sb.append("<CreatoDal>").append(date).append("</CreatoDal>");
		}
		if(dateStart2==null){
			sb.append("<CreatoAl>").append("").append("</CreatoAl>");
		}else{
			String date="";
    		
    		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
    		date=sdf.format(dateStart2);
			sb.append("<CreatoAl>").append(date).append("</CreatoAl>");
		}
			
		;
		sb.append("</Candidato>");

		return sb.toString();
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getIncoming() {
		return incoming;
	}

	public void setIncoming(String incoming) {
		this.incoming = incoming;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getCv() {
		return cv;
	}

	public void setCv(String cv) {
		this.cv = cv;
	}

	public String getAmbientiSvil() {
		return ambientiSvil;
	}

	public void setAmbientiSvil(String ambientiSvil) {
		this.ambientiSvil = ambientiSvil;
	}

	public String getAppServer() {
		return appServer;
	}

	public void setAppServer(String appServer) {
		this.appServer = appServer;
	}

	public String getAreaDiStudi() {
		return areaDiStudi;
	}

	public void setAreaDiStudi(String areaDiStudi) {
		this.areaDiStudi = areaDiStudi;
	}

	public String getAreaDip() {
		return areaDip;
	}

	public void setAreaDip(String areaDip) {
		this.areaDip = areaDip;
	}

	public String getAreaMaster() {
		return areaMaster;
	}

	public void setAreaMaster(String areaMaster) {
		this.areaMaster = areaMaster;
	}

	public String getAreaUni() {
		return areaUni;
	}

	public void setAreaUni(String areaUni) {
		this.areaUni = areaUni;
	}

	public Integer getCategoria() {
		return categoria;
	}

	public void setCategoria(Integer categoria) {
		this.categoria = categoria;
	}

	public String getCertDip() {
		return certDip;
	}

	public void setCertDip(String certDip) {
		this.certDip = certDip;
	}

	public String getCertMaster() {
		return certMaster;
	}

	public void setCertMaster(String certMaster) {
		this.certMaster = certMaster;
	}

	public String getCertUni() {
		return certUni;
	}

	public void setCertUni(String certUni) {
		this.certUni = certUni;
	}

	public String getCertificatiCorsiAttestati() {
		return certificatiCorsiAttestati;
	}

	public void setCertificatiCorsiAttestati(String certificatiCorsiAttestati) {
		this.certificatiCorsiAttestati = certificatiCorsiAttestati;
	}

	public String getCitta() {
		return citta;
	}

	public void setCitta(String citta) {
		this.citta = citta;
	}

	public String getCittaDip() {
		return cittaDip;
	}

	public void setCittaDip(String cittaDip) {
		this.cittaDip = cittaDip;
	}

	public String getCittaDom() {
		return cittaDom;
	}

	public void setCittaDom(String cittaDom) {
		this.cittaDom = cittaDom;
	}

	public String getCittaMaster() {
		return cittaMaster;
	}

	public void setCittaMaster(String cittaMaster) {
		this.cittaMaster = cittaMaster;
	}

	public String getCittaRes() {
		return cittaRes;
	}

	public void setCittaRes(String cittaRes) {
		this.cittaRes = cittaRes;
	}

	public String getCittaUni() {
		return cittaUni;
	}

	public void setCittaUni(String cittaUni) {
		this.cittaUni = cittaUni;
	}

	public String getCognome() {
		return cognome;
	}

	public void setCognome(String cognome) {
		this.cognome = cognome;
	}

	public String getComeCiHaiConosciuto() {
		return comeCiHaiConosciuto;
	}

	public void setComeCiHaiConosciuto(String comeCiHaiConosciuto) {
		this.comeCiHaiConosciuto = comeCiHaiConosciuto;
	}

	public String getContratto() {
		return contratto;
	}

	public void setContratto(String contratto) {
		this.contratto = contratto;
	}

	public Date getDataNascita() {
		return dataNascita;
	}

	public void setDataNascita(Date dataNascita) {
		this.dataNascita = dataNascita;
	}

	public Date getDateStart() {
		return dateStart;
	}

	public void setDateStart(Date dateStart) {
		this.dateStart = dateStart;
	}

	public Date getDateTime() {
		return dateTime;
	}

	public void setDateTime(Date dateTime) {
		this.dateTime = dateTime;
	}

	public String getDb() {
		return db;
	}

	public void setDb(String db) {
		this.db = db;
	}

	public String getIndirizzoDom() {
		return indirizzoDom;
	}

	public void setIndirizzoDom(String indirizzoDom) {
		this.indirizzoDom = indirizzoDom;
	}

	public String getIndirizzo_res() {
		return indirizzo_res;
	}

	public void setIndirizzo_res(String indirizzo_res) {
		this.indirizzo_res = indirizzo_res;
	}

	public String getIstitutoDip() {
		return istitutoDip;
	}

	public void setIstitutoDip(String istitutoDip) {
		this.istitutoDip = istitutoDip;
	}

	public String getIstitutoMaster() {
		return istitutoMaster;
	}

	public void setIstitutoMaster(String istitutoMaster) {
		this.istitutoMaster = istitutoMaster;
	}

	public String getIstitutoUni() {
		return istitutoUni;
	}

	public void setIstitutoUni(String istitutoUni) {
		this.istitutoUni = istitutoUni;
	}

	public String getLaureaLabel() {
		return laureaLabel;
	}

	public void setLaureaLabel(String laureaLabel) {
		this.laureaLabel = laureaLabel;
	}

	public String getLingue() {
		return lingue;
	}

	public void setLingue(String lingue) {
		this.lingue = lingue;
	}

	public String getLivelloIstruzione() {
		return livelloIstruzione;
	}

	public void setLivelloIstruzione(String livelloIstruzione) {
		this.livelloIstruzione = livelloIstruzione;
	}

	public String getMasterLabel() {
		return masterLabel;
	}

	public void setMasterLabel(String masterLabel) {
		this.masterLabel = masterLabel;
	}

	public String getNazione() {
		return nazione;
	}

	public void setNazione(String nazione) {
		this.nazione = nazione;
	}

	public String getNazioneDip() {
		return nazioneDip;
	}

	public void setNazioneDip(String nazioneDip) {
		this.nazioneDip = nazioneDip;
	}

	public String getNazioneMaster() {
		return nazioneMaster;
	}

	public void setNazioneMaster(String nazioneMaster) {
		this.nazioneMaster = nazioneMaster;
	}

	public String getNazioneUni() {
		return nazioneUni;
	}

	public void setNazioneUni(String nazioneUni) {
		this.nazioneUni = nazioneUni;
	}

	

	public String getPatente() {
		return patente;
	}

	public void setPatente(String patente) {
		this.patente = patente;
	}

	public String getProdotti() {
		return prodotti;
	}

	public void setProdotti(String prodotti) {
		this.prodotti = prodotti;
	}

	public String getSalario() {
		return salario;
	}

	public void setSalario(String salario) {
		this.salario = salario;
	}

	public String getSesso() {
		return sesso;
	}

	public void setSesso(String sesso) {
		this.sesso = sesso;
	}

	public String getSistemiOperativi() {
		return sistemiOperativi;
	}

	public void setSistemiOperativi(String sistemiOperativi) {
		this.sistemiOperativi = sistemiOperativi;
	}

	public String getSkill() {
		return skill;
	}

	public void setSkill(String skill) {
		this.skill = skill;
	}

	public String getSkillLabel() {
		return skillLabel;
	}

	public void setSkillLabel(String skillLabel) {
		this.skillLabel = skillLabel;
	}

	public String getTelefono() {
		return telefono;
	}

	public void setTelefono(String telefono) {
		this.telefono = telefono;
	}

	public String getTipoCategoria() {
		return tipoCategoria;
	}

	public void setTipoCategoria(String tipoCategoria) {
		this.tipoCategoria = tipoCategoria;
	}

	public String getWorkEsperienza() {
		return workEsperienza;
	}

	public void setWorkEsperienza(String workEsperienza) {
		this.workEsperienza = workEsperienza;
	}

	public String getWorkPreference() {
		return workPreference;
	}

	public void setWorkPreference(String workPreference) {
		this.workPreference = workPreference;
	}

	public String getTextToSearch() {
		return textToSearch;
	}

	public void setTextToSearch(String textToSearch) {
		this.textToSearch = textToSearch;
	}

	public ArrayList<String> getHp() {
		return hp;
	}

	public void setHp(ArrayList<String> hp) {
		this.hp = hp;
	}

	public WordSearchDTO getWordSearchDTO() {
		return wordSearchDTO;
	}

	public void setWordSearchDTO(WordSearchDTO wordSearchDTO) {
		this.wordSearchDTO = wordSearchDTO;
	}
	public Date getDateStart1() {
		return dateStart1;
	}

	public Date getDateStart2() {
		return dateStart2;
	}

	public void setDateStart1(Date dateStart1) {
		this.dateStart1 = dateStart1;
	}

	public void setDateStart2(Date dateStart2) {
		this.dateStart2 = dateStart2;
	}

	public String getCheckSearch() {
		return checkSearch;
	}

	public void setCheckSearch(String checkSearch) {
		this.checkSearch = checkSearch;
	}

	public GestioneCandidatoDTO getGcDTO() {
		return gcDTO;
	}

	public void setGcDTO(GestioneCandidatoDTO gcDTO) {
		this.gcDTO = gcDTO;
	}

	@Override
	public int hashCode() {
		return new Integer(id).intValue();
	}
	@Override
	public boolean equals(Object object) {
		if(object instanceof CandidatoDTO){
			if(((CandidatoDTO)object).getId().equals(id)){
				return true;
			}
		}
		
		return false;
	}
}
